package com.xinke.module.system.service.dict;

import java.util.*;
import javax.validation.*;
import com.xinke.module.system.model.vo.dict.*;
import com.xinke.module.system.model.entity.dict.DictDataDO;
import com.xinke.component.common.pojo.PageResult;
import com.xinke.component.common.pojo.PageParam;
import org.springframework.lang.Nullable;

/**
 * 字典数据 Service 接口
 *
 * @author yzx
 */
public interface DictDataService {

    /**
     * 创建字典数据
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createDictData(@Valid DictDataSaveReqVO createReqVO);

    /**
     * 更新字典数据
     *
     * @param updateReqVO 更新信息
     */
    void updateDictData(@Valid DictDataSaveReqVO updateReqVO);

    /**
     * 删除字典数据
     *
     * @param ddId 编号
     */
    void deleteDictData(Long ddId);

    /**
     * 获得字典数据
     *
     * @param ddId 编号
     * @return 字典数据
     */
    DictDataDO getDictData(Long ddId);

    /**
     * 获得字典数据分页
     *
     * @param pageReqVO 分页查询
     * @return 字典数据分页
     */
    PageResult<DictDataDO> getDictDataPage(DictDataPageReqVO pageReqVO);

    /**
     * 获得字典数据列表
     *
     * @param status   状态
     * @param dictType 字典类型
     * @return 字典数据全列表
     */
    List<DictDataDO> getDictDataList(@Nullable Integer status, @Nullable String dictType);
}